home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 3 / BBS in a box - Trilogy III.iso / Files / Prog / Q-R / RIFF File Format / stdfile.c < prev   
Encoding:
C/C++ Source or Header  |  1987-07-29  |  3.1 KB  |  151 lines  |  [TEXT/KAHL]

  1. /*
  2. mod 10 18 86 tsh - LSC 1.41 version
  3. MOD 07-19-86 MAZ - converted from stdfile.c for lightspeedC
  4. */
  5.  
  6. #include <PackageMgr.h>
  7. #include <FileMgr.h>
  8. #include <StdFilePkg.h>
  9. #include "MAZlib.h"
  10.  
  11. /* standard file's last VRefNum */
  12. extern short SFVRefNum : 0x214;
  13.  
  14. long filter_type = 0;
  15. long filter_type_2 = 0;
  16. long filter_creator = 0;
  17. short global_volrefnum;
  18.  
  19. pascal Boolean filter(f)
  20. FileParam *f;
  21.     {
  22.     if (filter_creator != 0 && f->ioFlFndrInfo.fdCreator != filter_creator)
  23.         return(TRUE);
  24.     if (filter_type != 0 && f->ioFlFndrInfo.fdType != filter_type
  25.       && (filter_type_2 == 0 || f->ioFlFndrInfo.fdType != filter_type_2))
  26.         return(TRUE);
  27.     return(FALSE);
  28.     }
  29.  
  30. bool input_file_name(prompt,filename)
  31. char *prompt;
  32. char filename[];
  33.     {
  34.     SFTypeList typeList;
  35.     SFReply reply;
  36.     char *p;
  37.     Point loc;
  38.     short i, len;
  39.     char myprom[256];
  40.     char myfile[256];
  41.  
  42.     i = strlen(prompt);
  43.     cpybuf(myprom+1,prompt,i);
  44.     myprom[0] = i;
  45.     loc.v = 80;
  46.     loc.h = 100;
  47.     typeList[0] = filter_type;
  48.     typeList[1] = filter_type_2;
  49.     reply.vRefNum = 0;
  50.     if (filter_type == 0)
  51.         len = 0;
  52.     else if (filter_type_2 == 0)
  53.         len = 1;
  54.     else
  55.         len = 2;
  56.     SFGetFile(loc, myprom, &filter, len, typeList, 0, &reply);
  57.     global_volrefnum = SFVRefNum;
  58.     if (!reply.good)
  59.         return(false);
  60.     global_volrefnum = reply.vRefNum;
  61.     i = reply.fName[0];
  62.     cpybuf(filename,reply.fName+1,i);
  63.     filename[i] = '\0';
  64.     return(true);
  65.     }
  66.  
  67. bool output_file_name(prompt,filename,suggested_name)
  68. char *prompt;
  69. char filename[];
  70. char *suggested_name;
  71.     {
  72.     SFReply reply;
  73.     char *p;
  74.     Point loc;
  75.     short i;
  76.     char myprom[256];
  77.     char myfile[256];
  78.  
  79.     i = strlen(prompt);
  80.     cpybuf(myprom+1,prompt,i);
  81.     myprom[0] = i;
  82.     i = strlen(suggested_name);
  83.     cpybuf(myfile+1,suggested_name,i);
  84.     myfile[0] = i;
  85.     loc.v = 80;
  86.     loc.h = 100;
  87.     reply.vRefNum = 0;
  88.     SFPutFile(loc, myprom, myfile, 0, &reply);
  89.     global_volrefnum = SFVRefNum;
  90.     if (!reply.good)
  91.         return(false);
  92.     global_volrefnum = reply.vRefNum;
  93.     i = reply.fName[0];
  94.     cpybuf(filename, reply.fName+1, i);
  95.     filename[i] = '\0';
  96.     return(true);
  97.     }  
  98.  
  99. #define M68K_GetVolInfo 0XA007
  100.  
  101. typedef struct
  102.     {
  103.     char header[12];            /* 0 */
  104.     char *IOCompletion;            /* 12 */
  105.     short IOResult;                /* 16 */
  106.     char *IONamePtr;            /* 18 (actually pascal string) */
  107.     short IOVRefNum;            /* 22 */
  108.     long filler;                /* 24-27 fields not used */
  109.     short IOVolIndex;            /* 28 */
  110.     long IOVCrDate;                /* 30 */
  111.     long IOVLsBkUp;                /* 34 */
  112.     short IOVAtrb;                /* 38 */
  113.     short IOVNmFls;                /* 40 */
  114.     short IOVFDirSt;            /* 42 */
  115.     short IOVBlLen;                /* 44 */
  116.     short IOVNumAlBlks;            /* 46 */
  117.     long IOVAlBlkSiz;            /* 48 */
  118.     long IOVClpSiz;                /* 52 */
  119.     short IOAlBlSt;                /* 56 */
  120.     long IOVNxtFNum;            /* 58 */
  121.     short IOVFrBlk;                /* 62 */
  122.     } VolInfo;                    /* 64 bytes */
  123.  
  124. get_vol_stuff(vrefnum,pattr,pblksize,pnblocks)
  125. short vrefnum;
  126. short *pattr;
  127. long *pblksize;
  128. short *pnblocks;
  129.     {
  130.     VolInfo parm;
  131.  
  132.     parm.IONamePtr = null;
  133.     parm.IOVRefNum = vrefnum;
  134.     parm.IOVolIndex = 0; /* use vrefnum only */
  135.     parm.IOCompletion = null;
  136.     PBGetVInfo(&parm,false);
  137.     *pattr = parm.IOVAtrb;
  138.     *pblksize = parm.IOVAlBlkSiz;
  139.     *pnblocks = parm.IOVFrBlk;
  140.     }
  141.  
  142. long disk_bytes_free(vrefnum)
  143. short vrefnum;
  144.     {
  145.     short attr, nblocks;
  146.     long blksize;
  147.  
  148.     get_vol_stuff(vrefnum,&attr,&blksize,&nblocks);
  149.     return(blksize*nblocks);
  150.     }
  151.